#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>

//int main()
//{
//	long long sum = 0;
//	int i = 1;
//	for (i = 1; i <= 9999; i++)
//	{
//		int j = i;
//		while (j)
//		{
//			if (j % 10 == 2 || j % 10 == 0 || j % 10 == 1 || j % 10 == 8)
//			{
//				sum += i;
//				break;
//			}
//			j /= 10;
//		}
//	}
//	printf("%lld\n", sum);
//	return 0;
//}
// 
//10+1+1+2
//int main()
//{
//	int i = 100;
//	int ret = 0;
//	int arr[3] = { 0 };
//	int k = 0;
//	for (i = 1200; i <= 1231; i++)
//	{
//		printf("%d\n", i);
//	}
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	int k = 0;
//	int b = 0;
//	scanf("%d%d%d", &n, &k, &b);
//	long long x = 0;
//	long long y = 0;
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < n; i++)
//	{
//		scanf("%lld%lld", &x, &y);
//		if (y == k * x + b)
//		{
//			count++;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}

//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d%d", &m, &n);
//	int i = 1;
//	while (i)
//	{
//		if ((m * i) % 10 == n)
//		{
//			break;
//		}
//		i++;
//	}
//	printf("%d\n", i);
//	return 0;
//}

//int main()
//{
//	int T = 0;
//	scanf("%d", &T);
//	long long A = 0;
//	long long B = 0;
//	long long C = 0;
//	for (int i = 1; i <= T; i++)
//	{
//		scanf("%lld%lld%lld", &A, &B, &C);
//		if (A + B > C)
//		{
//			printf("Case #%d: true\n", i);
//		}
//		else
//		{
//			printf("Case #%d: false\n", i);
//		}
//	}
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &n, &m);
//	int arr[100][100] = { 0 };
//	int str[100][100] = { 0 };
//	int i = 0;
//	int j = 0;
//	for (i = 0; i < n; i++)
//	{
//		for (j = 0; j < m; j++)
//		{
//			scanf("%d", &arr[i][j]);
//		}
//	}
//	for (i = 0; i < m; i++)
//	{
//		int x = n - 1;
//		for (j = 0; j < n; j++)
//		{
//			str[i][j] = arr[x][i];
//			x--;
//		}
//	}
//	for (i = 0; i < m; i++)
//	{
//		for (j = 0; j < n; j++)
//		{
//			printf("%d ", str[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}

//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int a = 1;
//	int b = 2;
//	int c = 3;
//	int count = 0;
//	int arr[300] = { 0 };
//	int m = 0;
//	for (int i = 0; i <= n; i++)
//	{
//		for (int j = 0; j <= n; j++)
//		{
//			for (int k = 0; k <= n; k++)
//			{
//				if ((i * a + j * b + k * c == n) ||
//					(i * a + k * b + j * c == n) ||
//					(j * a + i * b + k * c == n) ||
//					(j * a + k * b + j * c == n) ||
//					(k * a + i * b + j * c == n) ||
//					(k * a + j * b + i * c == n))
//				{
//					count++;
//				}
//			}
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}

//#include <stdio.h>
//
//int Ways(int n) 
//{
//    int dp[100];
//    dp[0] = 1;
//    dp[1] = 1;
//    dp[2] = 2;
//    for (int i = 3; i <= n; i++) 
//    {
//        dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3];
//    }
//
//    return dp[n];
//}
//
//int main() {
//    int n;
//    scanf("%d", &n);
//    int ways = Ways(n);
//    printf("%d\n", n, ways);
//    return 0;
//}

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[10][10] = { 0 };
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}
	int flag = 1;
	int a = 0;
	while (a < n)
	{
		if (flag == 1)
		{
			int i = a;
			int j = 0;
			while (i >= 0 && j <= a)
			{
				printf("%d ", arr[i][j]);
				i--;
				j++;
			}
			flag = 0;
		}
		else
		{
			int i = 0;
			int j = a;
			while (i <= a && j >= 0)
			{
				printf("%d ", arr[i][j]);
				i++;
				j--;
			}
			flag = 1;
		}
		a++;
	}
	a = n - 1;
	int m = 1;
	while (a >= 0)
	{
		if (flag)
		{
			int i = n - 1;
			int j = m;
			while (i >= m && j < n)
			{
				printf("%d ", arr[i][j]);
				i--;
				j++;
			}
			flag = 0;
		}
		else
		{
			int j = n - 1;
			int i = m;
			while (i < n && j >= m)
			{
				printf("%d ", arr[i][j]);
				i++;
				j--;
			}
			flag = 1;
		}
		m++;
		a--;
	}
	return 0;
}